/*
* 作者: wupengxin
* 创建时间:2016年08月30日17:54:14
* 用于将输入通道内容输出到制定的输出通道
 */
package adaptplus

import (
	//"encoding/json"
	"time"
)

type AdaptPlus struct {
}

// 获取输入通道通道的内容 然后输出到输出通道
func ControlInOut(inchannels []chan map[string]string, outchannels map[string][]chan map[string]string) {
	lambda := func(inchan chan map[string]string, index int) {
		type outfmt struct {
			Message string    `json:"message"`
			Time    time.Time `json:"time"`
			Line    int       `json:"line"`
		}
		for {
			msg, ok := <-inchan
			if !ok {
				// 此输入通道已经被关闭
				//common.DeleteChannelsByIndex(indexes, inchan)
				break
			}

			for _, v := range outchannels {
				v[index] <- msg
			}
			//outcont := outfmt{Message: msg, Line: i, Time: time.Now()}
			//if outstram, e := json.Marshal(outcont); e != nil {
			//	println(e)
			//} else {
			//	//println(string(outstram))
			//	// 把从输入插件读到的内容 发给每个输出插件
			//	for _, v := range outchannels {
			//		v[index] <- string(outstram)
			//	}
			//}
		}
	}

	for index, inchan := range inchannels {
		go lambda(inchan, index)
	}
}
